home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue44 / comcorn / ByteArray / CliMain.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-03-01  |  1.6 KB  |  82 lines

  1. unit CliMain;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, ExtCtrls, Server_TLB;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     Memo: TMemo;
  12.     Panel1: TPanel;
  13.     SetButton: TButton;
  14.     GetButton: TButton;
  15.     OpenButton: TButton;
  16.     OpenDialog: TOpenDialog;
  17.     procedure OpenButtonClick(Sender: TObject);
  18.     procedure FormCreate(Sender: TObject);
  19.     procedure SetButtonClick(Sender: TObject);
  20.     procedure GetButtonClick(Sender: TObject);
  21.   private
  22.     FServer: IBinaryData;
  23.   end;
  24.  
  25. var
  26.   MainForm: TMainForm;
  27.  
  28. implementation
  29.  
  30. {$R *.DFM}
  31.  
  32. procedure TMainForm.FormCreate(Sender: TObject);
  33. begin
  34.   FServer := CoBinaryData.Create;
  35. end;
  36.  
  37. procedure TMainForm.OpenButtonClick(Sender: TObject);
  38. begin
  39.   if OpenDialog.Execute then
  40.     Memo.Lines.LoadFromFile(OpenDialog.FileName);
  41. end;
  42.  
  43. procedure TMainForm.SetButtonClick(Sender: TObject);
  44. var
  45.   P: Pointer;
  46.   L: Integer;
  47.   V: OleVariant;
  48. begin
  49.   // Send memo data to server
  50.   L := Length(Memo.Text);
  51.   V := VarArrayCreate([0, L - 1], varByte);
  52.   P := VarArrayLock(V);
  53.   try
  54.     Move(Memo.Text[1], P^, L);
  55.   finally
  56.     VarArrayUnlock(V);
  57.   end;
  58.   FServer.Data := V;
  59. end;
  60.  
  61. procedure TMainForm.GetButtonClick(Sender: TObject);
  62. var
  63.   P: Pointer;
  64.   L: Integer;
  65.   S: string;
  66.   V: OleVariant;
  67. begin
  68.   // Get server's memo data
  69.   V := FServer.Data;
  70.   L := VarArrayHighBound(V, 1) - VarArrayLowBound(V, 1) + 1;
  71.   SetLength(S, L);
  72.   P := VarArrayLock(V);
  73.   try
  74.     Move(P^, S[1], L);
  75.   finally
  76.     VarArrayUnlock(V);
  77.   end;
  78.   Memo.Text := S;
  79. end;
  80.  
  81. end.
  82.